package com.bx.implatform.ucc.service;

import com.bx.implatform.ucc.dto.CreateRoomParamVO;
import com.bx.implatform.ucc.dto.JrhListParamDTO;
import com.bx.implatform.ucc.entity.UccLoginSysEntity;
import com.bx.implatform.ucc.entity.UccTerminalParamEntity;
import com.fasterxml.jackson.databind.JsonNode;
import jakarta.validation.Valid;
import org.springframework.stereotype.Service;

@Service
public interface UccApiService {


    /**
     * 获取accessToken
     *
     * @return
     */
    JsonNode getUccToken();

    /**
     * 获取视频通话路数
     *
     * @return
     */
    JsonNode videoCounts();

    /**
     * 创建固定会议室
     *
     * @return
     */
    JsonNode createRoom(CreateRoomParamVO vo);

    /**
     * 删除固定会议室
     *
     * @return
     */
    JsonNode deleteRoom(Integer roomId);

    /**
     * 获取会议室列表
     *
     * @return
     */
    JsonNode listRoom(
            String accessNum,
            String name,
            String properties,
            String direction,
            Integer currPage,
            Integer pageLimit,
            String userId);

    /**
     * 获取全部/分组联系人
     *
     * @return
     */
    JsonNode getAllLinkMans(String groupId);

    /**
     * 获取系统内所有的视频设备数据
     *
     * @return
     */
    JsonNode queryAllEmplCamera();

    /**
     * 获取视频设备的视频流
     *
     * @param ip
     * @param port
     * @param user
     * @param password
     * @param rs
     * @return
     */
    JsonNode getRTMP(String ip, String port, String user,
                     String password, String rs, String channel);

    /**
     * 获取融合通讯系统token
     *
     * @return
     */
    JsonNode sysToken();

    /**
     * 获取验证码
     */
    JsonNode validateCode();

    /**
     * 验证token
     */
    JsonNode validate(@Valid UccLoginSysEntity sysLoginSysEntity);

    /**
     * 获取终端管理列表
     */
    JsonNode queryAll(UccTerminalParamEntity params);

    /**
     * 获取接入号列表
     */
    JsonNode jrhList(JrhListParamDTO dto);

    /**
     * 获取调度员列表
     */
    JsonNode getUserList(String id, String userId, String userName, String deptName, String isAdmin, String exten, String currPage, String pageLimit, String properties, String direction);

    /**
     * 获取通话记录列表
     */
    JsonNode getAllCdrs(String caller, String callee, String startTime, String endTime);

    /**
     * 下载通话记录文件
     */
    byte[] downCdrFile(String callUuid);

    /**
     * 获取会议成员列表
     */
    JsonNode members(Integer confId, String confName);

    /**
     * 获取视频会议录像列表
     */
    JsonNode meetinglog(String secretKey, String meetingName, Integer currPage, Integer pageLimit, String properties, String direction);
}
